// 用户信息
import { login, getUserInfo, getUserDetailById } from '@/api/user'
// 导入 cookie持久储存token
import * as auth from '@/utils/auth'
export default {
  // 开启命名空间
  namespaced: true,
  // 全局共享数据
  state: {
    // 默认存硬盘获取token
    token: auth.getToken() || '',
    // 用户信息
    user: {}
  },
  // 只能修改state数据
  mutations: {
    // 存 token
    setToken (state, token) {
      // 存内存
      state.token = token
      // 存硬盘
      auth.setToken(token)
    },
    // 删 token
    delToken (state) {
      state.token = ''
      auth.removeToken()
    },
    // 存 登录人信息
    setUser (state, user) {
      state.user = user
    },
    // 删 登录人信息
    delUser (state) {
      state.user = {}
    }
  },
  // 处理异步操作
  actions: {
    // 取 token
    async getTokenAction ({ commit }, loginForm) {
      const res = await login(loginForm)
      commit('setToken', res)
    },
    // 取 登录人信息和头像
    async getUserAction ({ commit }) {
      const user = await getUserInfo()
      const photo = await getUserDetailById(user.userId)
      commit('setUser', { ...user, ...photo })
    },
    // 退出登录
    logoutAction ({ commit }) {
      commit('delToken')
      commit('delUser')
    }
  }
}
